//给你一个字符串 s ，它由某个字符串 t 和若干 t 的 同位字符串 连接而成。 
//
// 请你返回字符串 t 的 最小 可能长度。 
//
// 同位字符串 指的是重新排列一个单词得到的另外一个字符串，原来字符串中的每个字符在新字符串中都恰好只使用一次。 
//
// 
//
// 示例 1： 
//
// 
// 输入：s = "abba" 
// 
//
// 输出：2 
//
// 解释： 
//
// 一个可能的字符串 t 为 "ba" 。 
//
// 示例 2： 
//
// 
// 输入：s = "cdef" 
// 
//
// 输出：4 
//19923612632
// 解释： 
//
// 一个可能的字符串 t 为 "cdef" ，注意 t 可能等于 s 。 
//
// 
//
// 提示： 
//
// 
// 1 <= s.length <= 10⁵ 
// s 只包含小写英文字母。 
// 
//
// Related Topics 哈希表 字符串 计数 👍 35 👎 0


package LeetCode.editor.cn;


import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author ldltd
 * @date 2024-12-20 19:49:55
 * @description 3138.同位字符串连接的最小长度
 *
 * aaabbb  6
 * abababab  4  abab abab
 
 */
 
public class MinimumLengthOfAnagramConcatenation {
    public static void main(String[] args) {
    //测试代码
    MinimumLengthOfAnagramConcatenation fun = new MinimumLengthOfAnagramConcatenation();
    Solution solution= fun.new Solution();
    }

//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public int minAnagramLength(String s) {
        //直接枚举，第一个可以整数且校验后合法的值就是答案，否则就是最大长度
        int length = s.length();
        for (int i = 1; i < length; i++) {
            if(length%i==0) {
                if(check(s,i))
                    return i;
            }
        }
        return length;
    }
    private boolean check(String s,int n){
        int [] t1=new int[26];
        for (int i = 0; i < s.length(); i+=n) {
            int [] t2=new int[26];
            for (int j = i; j < i+n; j++) {
                t2[s.charAt(j)-'a']++;
            }
            if(i>0&&!Arrays.equals(t1,t2)){
                return false;
            }
            t1=t2;
        }
        return true;
        

    }
}
//leetcode submit region end(Prohibit modification and deletion)

}
